package com.casa_apoio.conversores;

import com.casa_apoio.model.dao.HospedagemDAO;
import com.casa_apoio.model.entity.Hospedagem;
import com.casa_apoio.util.FacesContextUtil;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;

@FacesConverter("numeroDiasRelatorio")
public class NumeroDiariasRelatorio implements Converter {

    private Hospedagem hospedagem;

    private HospedagemDAO hospedagemDAO() {
        HospedagemDAO<Hospedagem> hospedagemDAO = new HospedagemDAO<Hospedagem>(Hospedagem.class, FacesContextUtil.getRequestSession());
        return hospedagemDAO;
    }

    @Override
    public Object getAsObject(FacesContext fc, UIComponent uic, String string) {
        return string;
    }

    @Override
    public String getAsString(FacesContext fc, UIComponent uic, Object value) {
        int codigo = (Integer) value;
        hospedagem = (Hospedagem) hospedagemDAO().getEntity(codigo);

        Date data = hospedagem.getDataEntrada();
        Date data2 = hospedagem.getDataSaida();

        long dataEntrada = data.getTime();

        Calendar dataAtual = Calendar.getInstance();

        dataAtual.setTime(data2);

        long diferenca = dataAtual.getTimeInMillis() - dataEntrada;

        int tempoDia = 1000 * 60 * 60 * 24;

        long diasDiferenca = diferenca / tempoDia;

        String diaria = String.valueOf(diasDiferenca + 1);
        return diaria;
    }

    public String getDiarias(Date dataEntrada, Date dataSaida) {
       
        long entrada = dataEntrada.getTime();

        Calendar dataAtual = Calendar.getInstance();

        dataAtual.setTime(dataSaida);

        long diferenca = dataAtual.getTimeInMillis() - entrada;

        int tempoDia = 1000 * 60 * 60 * 24;

        long diasDiferenca = diferenca / tempoDia;

        String diaria = String.valueOf(diasDiferenca + 1);
        return diaria;
    }

    public Hospedagem getHospedagem() {
        return hospedagem;
    }

    public void setHospedagem(Hospedagem hospedagem) {
        this.hospedagem = hospedagem;
    }

}
